Shell脚本实战16-开发MySQL多实例启动脚本

1. 需求

已知:

  • MySQL多实例启动命令为:mysqld_safe --defaults-file=/data/3306/my.cnf &
  • 停止命令为:mysqladmin -u root -p123456 -S /data/3306/mysql.sock shutdown

请完成MySQL多实例启动脚本的编写。

要求:用函数、case语句、if语句等实现。

2. 实现

问题分析:要想写出这个脚本,必须要对MySQL服务很熟练。

参考脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
# init
Port=3306
MysqlUser="root"
MysqlPass="123456"
CmdPath="/usr/local/mysql/bin"
# startup function
start()
{
if [ `netstat -lnt | grep "$Port" | wc -l` -eq 0 ]
then
printf "Starting MySQL...\n"
/bin/bash ${CmdPath}/mysqld_safe --defaults-file=/data/${Port}/my.cnf 2>&1 /dev/null &
else
printf "MySQL is running...\n"
fi
}
# stop function
stop()
{
if [ ! `netstat -lnt | grep "$Port" | wc -l` -eq 0 ]
then
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${MysqlUser} -p${MysqlPass} -S /data/${Port}/mysql.sock shutdown
else
printf "MySQL is stopped...\n"
fi
}
# restart function
restart()
{
printf "Restarting MySQL...\n"
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
printf "Usage: $0 {start|stop|restart}\n"
esac

0%